import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
// 首先要安装 axios ,pinia,sass,vue-router,naive-ui,wangeditor 5富文本编辑
import naive from 'naive-ui' //1.引入模块
import { createDiscreteApi } from 'naive-ui' //1.引入模块
import { AdminStore } from './stores/AdminStore'  //1.引入

import { router } from './common/router'
import { createPinia } from 'pinia'
import axios from 'axios'
axios.defaults.baseURL = 'http://localhost:8080' //服务器全局地址


// 独立API
const { message, notification, dialog } = createDiscreteApi(["message", "dialog", "notification"])




const app = createApp(App)
app.provide('axiosTool', axios) //provide(使用的名字，真正注入的程序)方法注入
// 然后在别的页面，要用的时候，在vue里面引入inject就可以注入成功
app.provide('message', message)
app.provide('notification', notification)
app.provide('dialog', dialog)
app.provide("server_url", axios.defaults.baseURL)


app.use(naive)
app.use(createPinia())
//拦截器，这样就不用每次接口都传header了,
// 每次请求都会先拦截下来，加个headers信息再请求
const adminStore = AdminStore();
axios.interceptors.request.use((config) => {
  config.headers.token = adminStore.token
  return config
})
app.use(router)
app.mount('#app') //挂载要放在所有的use下面


// 以上的代码顺序很重要，因为要先创建再执行，